package com.lcm.basic.p6.enums;

/**
 * @author Coder-lcm
 * @date 2021/3/31
 */
public class TestEnum {
    public static void main(String[] args) {
        // 所有枚举类自带的方法 values()；获取所有的枚举实例
        SeasonEnum[] values = SeasonEnum.values();
        System.out.println(values[0]);
        /**
         * 获取枚举的属性值
         */
        System.out.println(SeasonEnum.SPRING.getSeason());
        /**
         * 通过valueOf可以获取到指定枚举类的属性值
         */
        System.out.println(Enum.valueOf(SeasonEnum.class, "SPRING"));
        System.out.println(Enum.valueOf(SeasonEnum.class, "SPRING").getSeason());


        /**
         * 测试枚举类继承接口的实现方法
         */
        SeasonEnum.SPRING.info(); // 春天
        Enum.valueOf(SeasonEnum.class, "FALL").info(); // 夏天

        /**
         * 枚举类默认都会继承Enum(父类)，故会有以下的内置方法
         */
        /**
         * compareTo 主要比较的是枚举的顺序（索引位置的差），若枚举对象再指定枚举对象之后则为正数、反之为负数
         */
        System.out.println(SeasonEnum.SPRING.compareTo(SeasonEnum.FALL));//-2 （0-2 = -2）
        System.out.println(SeasonEnum.SPRING.name());//SPRING
        /**
         * 列出枚举值再枚举类中的索引位置
         */
        System.out.println(SeasonEnum.FALL.ordinal()); //2
        /**
         * 列出枚举类的所有枚举实例
         */
        System.out.println(SeasonEnum.valueOf("SUMMER")); //SUMMER

        System.gc();
    }
}
